package com.example.demo.spring.aop;


import com.example.demo.spring.aop.demo.Test;

import java.util.concurrent.ConcurrentHashMap;

/**
 * 思路：
 1 扫描 aop 包， 获取 aspect 的类

 2 根据 切点 获取该切点的 类 和 方法

 3 根据配置的 类 和 方法 为该类生成一个代理对象

 4 将改代理对象放入 bean Map 中

 5 调用的时候 将代理对象 转换成需要的对象
 * @author: htc
 * @date: Created in 13:30 2019/2/20.
 */
public class Main {
    public static void main(String[] args) {
        //模拟容器初始化
        ApplicationContext applicationContext = new ApplicationContext();
        ConcurrentHashMap<String, Object> proxyBeanMap = ApplicationContext.proxyBeanMap;

        //生成的代理对象 默认为该类名的小写
        Test test = (Test) proxyBeanMap.get("test");
        test.doSomething();


        System.out.println("--------------");
        test.doWithNoProxy();
    }
}
